package com.ktgj.flight.mapper;

import java.util.List;
import com.ktgj.flight.domain.FlightOrderInfo;
import com.ktgj.flight.domain.FlightOrderList;
import com.ktgj.flight.domain.vo.FinanceConsignPymtRecordIdVo;
import com.ktgj.flight.domain.vo.FlightOrderDTOCRM;
import com.ktgj.flight.domain.vo.FlightOrderListVO;
import com.ktgj.flight.vo.FlightOrderInfoVo;
import org.apache.ibatis.annotations.Param;

/**
 * 机票预订_机票订单基本信息Mapper接口
 * 
 * @author ruoyi
 * @date 2021-10-26
 */
public interface FlightOrderInfoMapper 
{
    /**
     * 查询机票预订_机票订单基本信息
     * 
     * @param orderId 机票预订_机票订单基本信息ID
     * @return 机票预订_机票订单基本信息
     */
    public FlightOrderInfo selectFlightOrderInfoById(Long orderId);

    /**
     * 查询机票预订_机票订单基本信息列表
     * 
     * @param flightOrderInfo 机票预订_机票订单基本信息
     * @return 机票预订_机票订单基本信息集合
     */
    public List<FlightOrderInfo> selectFlightOrderInfoList(FlightOrderInfo flightOrderInfo);

    /**
     * 查询当天一年前的数据
     * @param createTime
     * @return
     */
    public List<FlightOrderInfo> overdueTicket(@Param("createTime") String createTime, @Param("endCreateTime") String endCreateTime);

    /**
     * 新增机票预订_机票订单基本信息
     * 
     * @param flightOrderInfo 机票预订_机票订单基本信息
     * @return 结果
     */
    public int insertFlightOrderInfo(FlightOrderInfo flightOrderInfo);

    /**
     * 修改机票预订_机票订单基本信息
     * 
     * @param flightOrderInfo 机票预订_机票订单基本信息
     * @return 结果
     */
    public int updateFlightOrderInfo(FlightOrderInfo flightOrderInfo);

    /**
     * 删除机票预订_机票订单基本信息
     * 
     * @param orderId 机票预订_机票订单基本信息ID
     * @return 结果
     */
    public int deleteFlightOrderInfoById(Long orderId);

    /**
     * 批量删除机票预订_机票订单基本信息
     * 
     * @param orderIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteFlightOrderInfoByIds(Long[] orderIds);

    /**
     * 我的-订单列表（机票-基本信息）
     * */
    public List<FlightOrderInfo> selectFlightOrderInfoByCustomerId(Long customerId);

    /**
     * 我的-订单列表（机票-基本信息）定时任务
     * */
    List<FlightOrderInfo> selectFlightOrderInfoByState();

    /**
     * 我的-订单列表（机票-基本信息）删除订单
     * */
    public int updateFlightOrderInfoByOrdernum(Long customerId);

    /**
     * 我的-订单列表（机票-基本信息）状态修改
     * */
    public int updateFlightOrderInfoByOrdernumPnrstatus(FlightOrderInfoVo flightOrderInfoVo);

    /**
     * 我的-订单列表（机票-基本信息）修改订单（姓名，手机号...）
     * */
    public int updateFlightOrderInfoByFlightOrderInfoVo(FlightOrderInfoVo flightOrderInfoVo);

    /**
     * 根据订单号查询机票订单基本信息ID
     * */
    public Long selectFlightOrderInfoByOrdernum(String ordernum);

    /**
     * 查询订单列表（机票）
     * */
    public List<FlightOrderInfo> checkTheTicketList(Long customerId);
    /**
     * 根据订单主键获取订单信息
     * @param orderId
     * @return
     */
    FlightOrderInfo selectFlightOrderInfoByPnr(String orderId);

    /**
     * 根据pnr获取订单信息
     * @param pnr
     * @return
     */
    FlightOrderInfo queryFlightOrderInfoByPnr(String pnr);

    /**
     * 订单详情
     * @param orderId
     * @param customerId
     * @return
     */
    public FlightOrderInfo queryFlightOrderInfoByOrderId(@Param("customerId") Long customerId, @Param("orderId") Long orderId);

    /**
     * 订单列表
     * @param customerId
     * @return
     */
    public List<FlightOrderList> flightOrderInfoList(Long customerId);

    /**
     * 订单收银台
     * @param orderId
     * @param customerId
     * @return
     */
    public FlightOrderInfo selectFlightOrderInfo(@Param("orderId") Long orderId, @Param("customerId") Long customerId);

    /**
     * 机票分析（未使用）
     * @param customerId
     * @param startDate
     * @param endDate
     * @return
     */
    public List<FlightOrderInfo> flightAnalysis(@Param("customerId") Long customerId, @Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 机票订单列表（CRM）
     * @return
     */
    public List<FlightOrderListVO> flightOrderList(FlightOrderDTOCRM order);

    public int queryFlightOrderNumber(@Param("customerId") Long customerId);

    /**
     * 行程机票订单
     * */
    public FlightOrderInfo journeyFlightOrderInfo(Long orderId);

    /**
     * 代收记录列表(订单状态)
     * */
    public List<FlightOrderInfo> financeConsignPymtRecordIdList(FinanceConsignPymtRecordIdVo financeConsignPymtRecordIdVo);

    /**
     * 获取支付订单列表
     * */
    public List<FlightOrderInfo> payList(@Param("start") String start, @Param("end") String end);

    /**
     * 回填备注
     * */
    public int backfillRemarks(@Param("id") Long id, @Param("remark") String remark);

    /**
     * 订单号获取机票订单信息（远程）
     * */
    public FlightOrderInfo order(Long orderId);

    List<FlightOrderList> getOrderListThings();
}
